package com.seeyon.apps.lzmzj.initializer;

import com.seeyon.apps.lzmzj.kit.DBKit;
import com.seeyon.ctp.common.AbstractSystemInitializer;
import com.seeyon.ctp.common.log.CtpLogFactory;
import org.apache.commons.logging.Log;

import java.util.List;
import java.util.Map;

public class SyncPluginInitializer extends AbstractSystemInitializer {
    private static final Log log = CtpLogFactory.getLog(SyncPluginInitializer.class);

    /**
     * 初始化方法，用于检查并创建临时数据表
     * 此方法首先检查数据库中是否存在名为'PLUGIN_TEMPORARY_DATA'的表如果不存在，则创建该表
     * 表包含ID、CREATE_DATE和SUBJECT字段，并设置ID字段为主键
     */
    public void initialize() {
        try {
            // 构建SQL查询，检查'PLUGIN_TEMPORARY_DATA'表是否存在
            StringBuilder stbSql = new StringBuilder();
            stbSql.append("SELECT NAME FROM SYSOBJECTS WHERE NAME = 'PLUGIN_TEMPORARY_DATA'");
            List<Map<String, Object>> dataList = DBKit.excuteSQL(stbSql.toString(), null);
            if (dataList.isEmpty()) {
                // 如果表不存在，构建创建表的SQL语句
                StringBuilder stb = new StringBuilder();
                stb.append("CREATE TABLE PLUGIN_TEMPORARY_DATA (").append("\r\n");
                stb.append("ID BIGINT NOT NULL,").append("\r\n");
                stb.append("CREATE_DATE TIMESTAMP(0),").append("\r\n");
                stb.append("TEMPORART_DATA_ID VARCHAR(1024),").append("\r\n");
                stb.append("CONSTRAINT PK_PLUGIN_TEMPORARY_DATA NOT CLUSTER PRIMARY KEY(ID))").append("\r\n");
                // 记录创建表的SQL语句
                log.info("创建数据库表sql语句:" + stb.toString());
                // 执行创建表的SQL语句，并返回影响的行数
                int num = DBKit.createTable(stb.toString());
                // 记录SQL语句执行的影响行数
                log.info("sql语句执行影响条数:" + num);
            }
        } catch (Exception e) {
            // 记录创建数据库表失败的错误信息
            log.error("创建数据库表失败:", e);
        }
    }


}
